package com.software.messagecenter.service;


import cn.hutool.core.bean.BeanUtil;
import com.software.messagecenter.entity.ClassMessage;
import com.software.messagecenter.entity.ClassMessageDTO;
import com.software.messagecenter.entity.Student;
import com.software.messagecenter.entity.Teacher;
import com.software.messagecenter.feignclient.UserCenterFeignClient;
import com.software.messagecenter.repository.ClassMessageRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class ClassMessageService {
//    public void test(id) {
//        // 查询student
//        student studentRepository.findByid(id);
//        if (student != null) {
//            xxxx
//        } else {
//            teacher teacherRepository.findById(id)
//        }
//    }

    @Autowired
    private UserCenterFeignClient userCenterFeignClient;

    @Autowired
    private ClassMessageRepository classMessageRepository;



//    public List<ClassMessageDTO> findMessagesByClassId(String classId) {
//        List<ClassMessage> classMessages = classMessageRepository.findByClassId(classId);
//
//        List<ClassMessageDTO> classMessageDTOList = new ArrayList<>();
//
//        for (int i = 0; i<classMessages.size();i++){
//            BeanUtil.copyProperties(classMessages.get(i), classMessageDTOList.get(i));
//        }
//
//        classMessageDTOList.forEach(f->{
//            String id = f.getSendId();
//            Student student = userCenterFeignClient.findStudentInfoByUserId(id);
//            if (student != null){
//                f.setStudent(student);
//                f.setTeacher(null);
//            }else {
//                Teacher teacher = userCenterFeignClient.findTeacherInfoByUserId(id);
//                f.setTeacher(teacher);
//                f.setStudent(null);
//            }
//        });
//        return classMessageDTOList;
//    }

    public List<ClassMessage> findMessagesByClassId(String classId) {
        List<ClassMessage> classMessages = classMessageRepository.findByClassIdOrderBySendTime(classId);
        return classMessages;
    }


    public List<ClassMessageDTO> findByClassId(String classId) {
        List<ClassMessage> classMessages = classMessageRepository.findByClassIdOrderBySendTime(classId);


        List<ClassMessageDTO> classMessageDTOList = new ArrayList<>();

        for (int i = 0; i<classMessages.size();i++){
            ClassMessageDTO dto = new ClassMessageDTO();
            BeanUtil.copyProperties(classMessages.get(i), dto);
            classMessageDTOList.add(dto);
        }

        classMessageDTOList.forEach(f->{
            String id = f.getSendId();
            Student student = userCenterFeignClient.findStudentInfoByUserId(id);
            if (student != null){
                f.setStudent(student);
                f.setTeacher(null);
            }else {
                Teacher teacher = userCenterFeignClient.findTeacherInfoByUserId(id);
                f.setTeacher(teacher);
                f.setStudent(null);
            }
        });
        return classMessageDTOList;
    }

    public ClassMessage addClassMessage(ClassMessage classMessage) {
        classMessageRepository.save(classMessage);
        return classMessageRepository.save(classMessage);
    }
}
